joApps.Menubar = {

	id: 'Menubar',
	
	//System Menu
	systemMenu: {
		'&#9830': {
			'About this OS': 'joCore.aboutOS();',
			'Preferences...': 'joApps.PrefManager.start();',
		},
	},

	onload: function(){
		joCore.IO.load('css', 'apps/Menubar/Menubar.app.css');
	
		var menubar = joCore.Node.createNode('ul', { 'class': 'unselectable' }, $('menubar'));
		menubar.innerHTML = this.systemMenu;
		this.menubar = menubar;

		joEvent.addEvent($('menubar'), 'mousedown', function(event){ event.stopPropagation(); }, false, this);

		joDisplay.init();
	},

	quit: function(){},

	update: function(aList){
		while(this.menubar.hasChildNodes()){
			this.menubar.removeChild(this.menubar.firstChild);
		}

		this.menubar.appendChild(this.build(this.systemMenu));
		this.menubar.appendChild(this.build(aList));
	},
	
	/**
	 * メニューオブジェクトからメニューを作成する
	 */
	build: function(menuObj){
		var fragment = document.createDocumentFragment();
	
		for(menuname in menuObj){
			if(typeof menuObj[menuname] === 'object'){
				//submenuがある場合: menupopupを作成
				
				//submenuの親
				var li = joCore.Node.createNode('li', null, fragment);
				joCore.Node.createNode('a', { ':child': menuname }, li);
				
				//submenu本体
				var ul = joCore.Node.createNode('ul', null, li);
				ul.appendChild(arguments.callee.call(this, menuObj[menuname]));
			}else{
				//menuitemを作成
				var li = joCore.Node.createNode('li', null, fragment);
				if(menuObj[menuname])
					joCore.Node.createNode('a', { ':child': menuname, onclick: menuObj[menuname] }, li);
				else
					joCore.Node.createNode('a', { ':child': menuname }, li);
			}
		}
		
		return fragment;
	},
};